<?php
################################################################################
################################################################################
// PHPSlideShow v0.6 written by Greg Lawler
// from http://www.zinkwazi.com/pages.php?page_name=scripts

// v0.6.1 july 2002 - fixed special character bug.
// v0.6 july 2002 - added lots of formatting options and a security patch
// v0.5.1 march 2002 - minor bug fixes, reg exp fix...
// v0.5 march 2002 - osx path fix, page headings for multi dir, cleaner...
// v0.4 july 10 2001
// v0.3.5 july 5 2001
// v0.3.4 april 19 2001
// v0.3.3 january 9 2001
// v0.3.1 september 29 2000 - added support for image buttons
// v0.3 september 12 2000 - added support for comments
// v0.2 august 28 2000
//
// Feel free to use/modify this little script
//
// IMPORTANT NOTE....
// if you want to send me a token of appreciation, starbucks coffee coupons 
// are gladly accepted from http://www.starbucks.com ;)
// my address is:
// attention: greg lawler
// 801 alston road, santa barbara, ca 93108 usa
// otherwise it's free.
//
// this script comes with no implied warranty.
//
// enjoy :)
// greg

############################# Quick Start Installation #########################
// put this file in a directory that contains your images
// the slideshow should now work...

############################# Customized  Installation #########################
// Q: how do i add image comments/descriptions to the slideshow?
// A: make a file (e.g. pics.txt) that contains the image names and descriptions
// place each image name and description on a new line separated by a semi colon.
// an easy way to do this is type
// ls *.jpg > pics.txt in linux or
// dir *.jpg > pics.txt in dos - you will need edit this with notepad/vi to clean
// out any extra stuff that dir puts in there and to add the semi colon and 
// description.
// the slideshow should now work including comments...
//
// Q: how do i give each directory of images it's own page heading?
// A: place a file called heading.txt in each directory. place the page heading
// on the first line of this file.
//
// Q: how do i use one slideshow for multiple different directories of images?
// A: all you need to do to enable this is to call the script and pass it the 
// directory path.
// NOTE: for security, you can only access directories within the same level as
// the phpslideshow.php script...
// eg http://your_url/phpslideshow.php?directory=dog_pics
// eg http://your_url/phpslideshow.php?directory=cat_pics
// eg http://your_url/phpslideshow.php?directory=extra/cat_pics
// these three examples will run phpslideshow but each one will load a different
// set of images and descriptions located in the directories shown
//
// Q: how do i use phpslideshow.php in my existing web page or html template?
// A: change the $standalone variable from true to false.
// what this does is removes the html page headers and footers and only prints
// out the phpslideshow table...
// to use this in an existing php page, use the following line:
// include("phpslideshow.php");
// don't forget that this is php code so it needs to be inside the <? php tags.
// also, the // at the beginning of the line need to e removed.

//
// EXAMPLE pics.txt file
//
// greg.jpg;Me
// dog.png;My dog John
// cat;
// tux.jpg;My friend Tux
//
// NO BLANK LINES either!
// as you can see, not all pics need a description but the ";" is a MUST!
// point your browser at the script and voilla!

#####  CREDITS  #####
// the following nice folks have contributed code snippets, bug fixes, ideas :)
// patrick, nicolas, otto, wei-min lee, tom, jonathan, jason rust, hai phung 
// greg rundlett, laszlo (jabba), mike collard, justin, jadex, bunnyguy
################################################################################
################################################################################

// file containing optional image descriptions
$pic_info_file="pics.txt";

// name of file containing optional page headings
$heading_info_file = "heading.txt";

// set this to true to display the image filename
$show_image_name = "false";

// set to true to display navigation icons instead of text...
$show_navigation_buttons = "false";
$back_button = "back.gif";
$next_button = "next.gif";

// automated slideshow options
// set this to true to enable the auto slideshow feature
$auto_slideshow = "false";
// $sec is number of seconds between slides...
$sec = "2";

// some formatting options...
$top_row_color = "#cccccc";
$image_row_color = "#ffffff";
$bottom_row_color = "#cccccc";
$page_background_color = "#ffffff";
$main_table_border_color = "#000000";
$img_border_color = "#000000";
$main_table_width = "60%";
$your_home_url = "http://www.memorialmusolino.com";
$home_link = "HOME";
$next_alt = "Avanti";
$back_alt = "Indietro";

// set standalone to false if you are using this script in an existing php doc
// e.g. insert the following line in the page where 
// you want phpslideshow to appear
// include("phpslideshow.php"); 
// dont forget to remove the comment slashes...
$standalone = "true";

################################################################################
// grab the variables we want set for newer php version compatability
// the @ supress the error messages if your php.ini error level is too high
@$currentPic = $GLOBALS['HTTP_GET_VARS']['currentPic'];
@$directory = $GLOBALS['HTTP_GET_VARS']['directory'];

// check for platform dependent path info... (for windows and mac OSX)
$path = empty($HTTP_SERVER_VARS['PATH_INFO'])?
$HTTP_SERVER_VARS['PHP_SELF']:$HTTP_SERVER_VARS['PATH_INFO'];

// a little security - check that the user did not change the path...
// the path may not contain .. or : (as in c:) or start with / (root dir)
if (preg_match(':(\.\.|^/|\:):', $directory)) {
	print "<b>ERROR:</b> Your request contains an invalid path.<br>";
	print "For security purposes, you can only access directories ";
	print "within this one.<br>";
	print "Your dir path may not contain .. or : or start with a /<br>";
	print "<br><a href=\"$path\">Try again</a>";
	exit;
}

// set directory
if (empty($directory)) $directory = ".";

// if there is no $heading_info_file (see format above) set page heading here
if ( !file_exists("$directory/$heading_info_file")) {
	$header = "Fotogallery 3� Memorial Paolo Musolino";
	$browser_title = "$header";
}
else {
	$heading_info = file("$directory/$heading_info_file");
	$header = htmlentities($heading_info[0]);
}

// image / text buttons
if ($show_navigation_buttons == "true") {
	$back_src = "<img src=\"$back_button\" alt=\"$back_alt\" border=\"0\">";
	$next_src = "<img src=\"$next_button\" alt=\"$next_alt\" border=\"0\">";
}
else {
	$back_src = "<b>$back_alt</b>";
	$next_src = "<b>$next_alt</b>";
}

	if ( !file_exists("$directory/$pic_info_file")) {
        $dh = opendir( "$directory" );
        while( $file = readdir( $dh ) ) {
// look for these file types....
                if (eregi("(jpg|jpeg|gif|png)$",$file)) {
                        $pic_info[] = $file;
  			sort( $pic_info );
                }
        }
  }
  else $pic_info=file("$directory/$pic_info_file");

// begin messing with the array
$number_pics = count ($pic_info);
if (empty($currentPic)) $currentPic = 0;
if (($currentPic > $number_pics)||($currentPic == $number_pics))
	$currentPic = '0';
$item = explode (";", $pic_info[$currentPic]);
$last = $number_pics - 1;
$next = $currentPic + 1;
if ($currentPic > 0 ) $back = $currentPic - 1;
else $currentPic = "0";

	// print the description if it exists
$blank = empty($item[1])?'&nbsp;':htmlentities($item[1]);
$show_name = ($show_image_name=="false")?'&nbsp;':htmlentities($item[0]);

if ($currentPic > 0 ) $nav=$back;
else $nav=$last;

// meta refresh stuff for auto slideshow...
if ($auto_slideshow == "true") {
$meta_refresh = "<meta http-equiv=\"refresh\" content=\"";
$meta_refresh .= "$sec;url=$path?directory=$directory&currentPic=$next\">";
}
else $meta_refresh = "\n";

################################################################################

// top of html page stuff
// print the page header if in standalone mode
if ($standalone == "true") {
print <<< HERE

<!-- PHPSlideshow v0.5 by Greg Lawler -->
<!-- http://www.zinkwazi.com/pages.php?page_name=scripts -->
<html>
<head>
    $meta_refresh
    <title>$header</title>
    <style type="text/css">
	    body { font-family: verdana; font-size: 14px; }
	    a { font-family: verdana; 
	    font-size: 14px; 
	    text-decoration: none }
    </style>
</head>
<body bgcolor="$page_background_color">

HERE;
}

// draw the main table in html
print <<< HERE

<center>
<table width="$main_table_width" align="center" valign="center" 
	border="0" cellspacing="0" cellpadding="2" bgcolor="$main_table_border_color">
 <tr>
  <td>
   <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr bgcolor="$top_row_color">
     <td align="left" nowrap width="50%">&nbsp;&nbsp;<b>$header</b></td>
     <td width="50%" align="right" valign="center">
     	<a href="$path?directory=$directory&currentPic=$nav">$back_src</a>
	[ $next of $number_pics ] 
     	<a href="$path?directory=$directory&currentPic=$next">$next_src</a>&nbsp;&nbsp;
     </td>
    </tr>
   </table>
   <table width="100%" border="0" cellspacing="0" cellpadding="5">
    <tr>
	<td bgcolor="$image_row_color" align="center" valign="center">
	  <a href="$path?directory=$directory&currentPic=$next">
	  <img src="$directory/$item[0]" alt="image" border="2" 
	  style="border-color: $img_border_color">
	  </a>
	</td>
	 <td bgcolor="$image_row_color" align="center" valign="center" 
	 	width="80%">$blank<br>$show_name</td>
    </tr>
    <tr bgcolor="$bottom_row_color">
	<td>&nbsp;</td>
	<td align="right">&nbsp;<b><a href="$your_home_url">$home_link</a></b></td>
    </tr>
   </table>
  </td>
 </tr>
</table>
</center>
HERE;

// print the page footer if in standalone mode
if ($standalone == "true") {
print <<< HERE
</body>
</html>
HERE;
}

?>